#define _CRT_SECURE_NO_WARNINGS

//#include <iostream>
//#include <assert.h>
//#include <algorithm>
//using namespace std;
//
//#include "list.h"
//
//int main()
//{
//	//my_list::test1();
//
//
//
//	return 0;
//}
//


//
//#include <iostream>
//using namespace std;
//
//int n, m, p, q;
//
//int to_end(int i, int j, int n, int m, int p, int q)
//{
//    if (i == n && j == m) return 1;
//
//    if ((i == p - 2 && j == q - 1) || (i == p - 2 && j == q - 2) || (i == p - 2 && j == q + 1) || (i == p - 1 && j == q + 2)
//        || (i == p && j == q)
//        || (i == p + 2 && j == q - 1) || (i == p + 1 && j == q - 2) || (i == p + 2 && j == q + 1) || (i == p + 1 && j == q + 2))
//    {
//        return 0;
//    }
//
//    if ((i >= n && j != m) || (i != n && j >= m)) return 0;
//
//    return to_end(i + 1, j, n, m, p, q) + to_end(i, j + 1, n, m, p, q);
//}
//
//int main()
//{
//    cin >> n >> m >> p >> q;
//
//    int i = 0, j = 0;
//    int t = to_end(i, j, n, m, p, q);
//    cout << t << endl;
//
//    return 0;
//}

//
//#include <iostream>
//using namespace std;
//
//int n, m, p, q;
//
//long long to_end(int i, int j, int n, int m, int p, int q)
//{
//    if (i == n && j == m) return 1;
//
//    if ((i == p - 2 && j == q - 1) || (i == p - 1 && j == q - 2) || (i == p - 2 && j == q + 1) || (i == p - 1 && j == q + 2)
//        || (i == p && j == q)
//        || (i == p + 2 && j == q - 1) || (i == p + 1 && j == q - 2) || (i == p + 2 && j == q + 1) || (i == p + 1 && j == q + 2))
//    {
//        return 0;
//    }
//
//    if (i > n || j > m) return 0;
//
//    return to_end(i + 1, j, n, m, p, q) + to_end(i, j + 1, n, m, p, q);
//}
//
//int main()
//{
//    cin >> n >> m >> p >> q;
//
//    int i = 0, j = 0;
//    cout << to_end(i, j, n, m, p, q) << endl;
//
//    return 0;
//}



#include <iostream>
#include <list>
#include <assert.h>
using namespace std;

#include "list.h"

int main()
{
	my_list::test();

	return 0;
}